﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GenericWin
{
    /// <summary>
    /// Interface : Cette interface doit etre implémenter 
    /// lorsque un utilisateur veut implémenter sa propre connexion.
    /// </summary>
    public interface IConnexionAuthentification
    {
        /// <summary>
        /// Cette méthode est appelé lorsque l'utilisateur clique sur le bouton valider.
        /// Il faut au préalable appelé la méthode AddViewForAuth de la classe EcranConnection en passant en paramètre la classe.
        /// </summary>
        /// <param name="values">Contient l'ensemble des valeurs des champs avec comme clé le nom du champ. Les deux champs ajoutés par défaut ont  pour clé "Utilisateur" et "Mot de passe"</param>
        /// <returns>Retourne un boolean permettant de savoir si l'authentification a réussi.</returns>
        bool Authentificate(Dictionary<String, String> values);

        /// <summary>
        /// Cette méthode doit être implémenter par le controlleur père de l'application qui sera développé.
        /// Elle sert à créer une instance de la classe configuration pour l'assigner au GenericMainControlleur.
        /// Cette classe possède un tas de propriétés qui peuvent être initialisé par le fichier de configuration de l'application.
        /// Cette classe peut être hérité si l'application doit possèder plus de paramètre de configuration que celle proposer de base.
        /// </summary>
        /// <returns>Retourne une instance de configuration correctement initialisé</returns>
        Configuration BuildConfiguration();
    }
}
